home *** CD-ROM | disk | FTP | other *** search
/ Technotools / Technotools (Chestnut CD-ROM)(1993).ISO / editors / tscredd2 / scrdisk5.exe / arc / DEMOWIND.C next >
Text File  |  1990-04-16  |  53KB  |  2,224 lines

  1.  
  2. #include <dos.h>
  3. #include <stdlib.h>
  4. #include <conio.h>
  5. #include <ctype.h>
  6. #include "scredit.h"
  7. #include "windows.h"
  8.  
  9. struct {
  10.   unsigned char
  11.     MenuLiteBg,
  12.     MenuLiteFg,
  13.     MenuNameBg,
  14.     MenuNameFg,
  15.     MenuBorderBg,
  16.     MenuBorderFg,
  17.     MenuTextBg,
  18.     MenuTextFg,
  19.     MenuSelectBg,
  20.     MenuSelectFg,
  21.     MenuErrorBg,
  22.     MenuErrorFg,
  23.     MenuBarBg,
  24.     MenuBarFg,
  25.     PopUpBorderBg,
  26.     PopUpBorderFg,
  27.     PopUpTextBg,
  28.     PopUpTextFg,
  29.     PopUpFootBg,
  30.     PopUpFootFg,
  31.     PopUpBarBg,
  32.     PopUpBarFg,
  33.     ChgNameBg,
  34.     ChgNameFg,
  35.     ChgNamePos,
  36.     ChgBorderBg,
  37.     ChgBorderFg,
  38.     ChgBorderStyle,
  39.     ChgFootBg,
  40.     ChgFootFg,
  41.     ChgFootPos,
  42.     ChgTextBg,
  43.     ChgTextFg;
  44.  char
  45.     ChgName[31],
  46.     ChgFooter[31];
  47.   } ConfigRec;
  48.  
  49. char WorkStr[81],
  50.      WindowName[81],
  51.      WindowFoot[81],
  52.      HoldScreen[4000];
  53.  
  54. int WindowNo,
  55.     WindowRow,
  56.     WindowCol,
  57.     WindowLength,
  58.     WindowLines,
  59.     X,Y,Z,
  60.     PrevOption,
  61.     NewLine,
  62.     LastLine,
  63.     CurrentCol,
  64.     DemoOption,
  65.     ColorOption,
  66.     MainOption,
  67.     OutOfMem,
  68.     Menus[100];
  69.  
  70.  
  71.  
  72. unsigned char
  73.     BorderStyle,
  74.     BorderBg,
  75.     BorderFg,
  76.     WindowNameBg,
  77.     WindowNameFg,
  78.     WindowNamePos,
  79.     WindowFootBg,
  80.     WindowFootFg,
  81.     WindowFootPos,
  82.     TextBg,
  83.     TextFg;
  84.  
  85. unsigned char
  86.     False = 0,
  87.     True  = 1,
  88.     DoMouse = 0,
  89.     WindowActive = 0;
  90.  
  91. #define MenuBarItems 4
  92. char  MenuBarSpacing[4] = "   ";
  93. char  MenuBarStr[81];
  94. char  MenuBarFields[MenuBarItems][20] =
  95.         {"General Demo",
  96.          "Data Entry",
  97.          "Color Changes",
  98.          "Quit"};
  99.  
  100. int   MenuBarLines[MenuBarItems]  = {12,0,4,0};
  101.  
  102. char  DemoMenu[12][30] =
  103.            {" Fast video mode is now <OFF>",
  104.             " Open & shut 50 windows",
  105.             " Moving a window",
  106.             " Dragging a window",
  107.             " Moving several windows",
  108.             " Writing lines to windows",
  109.             " Writing with scrollings",
  110.             " Reading lines from windows",
  111.             " Shuffling windows",
  112.             " Popping windows",
  113.             " Changing backgrounds",
  114.             " Standard I/O"};
  115.  
  116. char ColorMenu[4][20] = {"Border","Name","Footer","Text"};
  117.  
  118.  
  119. void Initialize()
  120. {
  121. if  (S_Mono)
  122.     {
  123.     ConfigRec.MenuLiteBg    = 7;
  124.     ConfigRec.MenuLiteFg    = 0;
  125.     ConfigRec.MenuNameBg    = 7;
  126.     ConfigRec.MenuNameFg    = 0;
  127.     ConfigRec.MenuBorderBg  = 0;
  128.     ConfigRec.MenuBorderFg  = 7;
  129.     ConfigRec.MenuTextBg    = 0;
  130.     ConfigRec.MenuTextFg    = 7;
  131.     ConfigRec.MenuBarBg     = 0;
  132.     ConfigRec.MenuBarFg     = 7;
  133.     ConfigRec.MenuSelectBg  = 7;
  134.     ConfigRec.MenuSelectFg  = 0;
  135.     ConfigRec.PopUpBorderBg = 0;
  136.     ConfigRec.PopUpBorderFg = 15;
  137.     ConfigRec.PopUpTextBg   = 0;
  138.     ConfigRec.PopUpTextFg   = 7;
  139.     ConfigRec.PopUpFootBg   = 7;
  140.     ConfigRec.PopUpFootFg   = 0;
  141.     ConfigRec.PopUpBarBg    = 7;
  142.     ConfigRec.PopUpBarFg    = 0;
  143.     strcpy(ConfigRec.ChgName,"Name");
  144.     strcpy(ConfigRec.ChgFooter,"Footer");
  145.     ConfigRec.ChgNameBg     = LIGHTGRAY;
  146.     ConfigRec.ChgNameFg     = BLACK;
  147.     ConfigRec.ChgNamePos    = 3;
  148.     ConfigRec.ChgBorderBg   = BLACK;
  149.     ConfigRec.ChgBorderFg   = WHITE;
  150.     ConfigRec.ChgBorderStyle= 3;
  151.     ConfigRec.ChgFootBg     = LIGHTGRAY;
  152.     ConfigRec.ChgFootFg     = BLACK;
  153.     ConfigRec.ChgFootPos    = 3;
  154.     ConfigRec.ChgTextBg     = BLACK;
  155.     ConfigRec.ChgTextFg     = WHITE;
  156.     }
  157. else
  158.     {
  159.     ConfigRec.MenuLiteBg    = LIGHTGRAY;
  160.     ConfigRec.MenuLiteFg    = BLUE;
  161.     ConfigRec.MenuNameBg    = 0;
  162.     ConfigRec.MenuNameFg    = 0;
  163.     ConfigRec.MenuBorderBg  = GREEN;
  164.     ConfigRec.MenuBorderFg  = BLACK;
  165.     ConfigRec.MenuTextBg    = BLUE;
  166.     ConfigRec.MenuTextFg    = CYAN;
  167.     ConfigRec.MenuBarBg     = 0;
  168.     ConfigRec.MenuBarFg     = 0;
  169.     ConfigRec.MenuSelectBg  = 0;
  170.     ConfigRec.MenuSelectFg  = 0;
  171.     ConfigRec.PopUpBorderBg = LIGHTGRAY;
  172.     ConfigRec.PopUpBorderFg = BLUE;
  173.     ConfigRec.PopUpTextBg   = BLUE;
  174.     ConfigRec.PopUpTextFg   = CYAN;
  175.     ConfigRec.PopUpFootBg   = LIGHTGRAY;
  176.     ConfigRec.PopUpFootFg   = BLUE;
  177.     ConfigRec.PopUpBarBg    = LIGHTGRAY;
  178.     ConfigRec.PopUpBarFg    = BLUE;
  179.     strcpy(ConfigRec.ChgName,"Name");
  180.     strcpy(ConfigRec.ChgFooter,"Footer");
  181.     ConfigRec.ChgNameBg     = LIGHTGRAY;
  182.     ConfigRec.ChgNameFg     = BLACK;
  183.     ConfigRec.ChgNamePos    = 3;
  184.     ConfigRec.ChgBorderBg   = BLACK;
  185.     ConfigRec.ChgBorderFg   = WHITE;
  186.     ConfigRec.ChgBorderStyle= 3;
  187.     ConfigRec.ChgFootBg     = LIGHTGRAY;
  188.     ConfigRec.ChgFootFg     = BLACK;
  189.     ConfigRec.ChgFootPos    = 3;
  190.     ConfigRec.ChgTextBg     = BLACK;
  191.     ConfigRec.ChgTextFg     = WHITE;
  192.     }
  193. }
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204. void RandomWindows(int Count)
  205. {
  206. static int result;
  207. static unsigned char
  208.    ColorSets[8][7] =
  209.           {3,LIGHTGRAY,  BLACK,   LIGHTGRAY,WHITE,  BLACK,WHITE,
  210.            2,BLUE,       CYAN,    BLUE,     WHITE,  BLUE, CYAN,
  211.            3,BLACK,      YELLOW,  GREEN,    YELLOW, BLACK, YELLOW,
  212.            2,GREEN,      BLACK,   GREEN,    YELLOW, GREEN, WHITE,
  213.            1,RED,        YELLOW,  RED,      YELLOW, RED,   WHITE,
  214.            3,BROWN,      YELLOW,  LIGHTGRAY,WHITE,  BROWN, WHITE,
  215.            1,MAGENTA,    YELLOW,  MAGENTA,  WHITE,  MAGENTA, BLACK,
  216.            2,BLUE,       BLACK,   LIGHTGRAY,BLUE,   LIGHTGRAY, BLACK};
  217. OutOfMem = 0;
  218.  
  219. for (X=0;((X<Count)&&(OutOfMem==0));X++)
  220.     {
  221.     do {WindowRow    = random(21);}   while (WindowRow<1);
  222.     do {WindowCol    = random(60);}   while (WindowCol<1);
  223.     do {WindowLength = random(80-WindowCol);}
  224.        while ((WindowLength <20)||(WindowLength>30));
  225.     do {WindowLines  = random(9);}
  226.        while ((WindowLines <3)||(WindowLines>7));
  227.  
  228.     itoa(X,WorkStr,10);
  229.     strcpy(WindowName,"Window");
  230.     strcat(WindowName,WorkStr);
  231.  
  232.     do {WindowNamePos= random(3);} while (WindowNamePos<1);
  233.  
  234.     strcpy(WindowFoot,WindowName);
  235.  
  236.     do {WindowFootPos= random(3);} while (WindowFootPos<1);
  237.  
  238.     Y = X%7;
  239.  
  240.     BorderStyle  = ColorSets[Y][0];
  241.     BorderBg     = ColorSets[Y][1];
  242.     BorderFg     = ColorSets[Y][2];
  243.     WindowNameBg = ColorSets[Y][3];
  244.     WindowNameFg = ColorSets[Y][4];
  245.     WindowFootBg = ColorSets[Y][3];
  246.     WindowFootFg = ColorSets[Y][4];
  247.     TextBg       = ColorSets[Y][5];
  248.     TextFg       = ColorSets[Y][6];
  249.  
  250.     result = DefineWindow(
  251.                       WindowRow,WindowCol,WindowLength,WindowLines,
  252.                       BorderStyle,BorderBg,BorderFg,
  253.                       WindowName,WindowNameBg,WindowNameFg,WindowNamePos,
  254.                       WindowFoot,WindowNameBg,WindowNameFg,WindowFootPos,
  255.                       TextBg,TextFg);
  256.     if (result > 0)
  257.        Menus[X+3] = result;
  258.     else
  259.        OutOfMem   = X+2;
  260.     }
  261. WindowName[0] = 0;
  262. WindowNamePos = 0;
  263. WindowFoot[0] = 0;
  264. WindowFootPos = 0;
  265. }
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279. void BuildOneWindow(int N, int R, int C, int W, int L)
  280. {
  281. WindowRow      = R;
  282. WindowCol      = C;
  283. WindowLength   = W;
  284. WindowLines    = L;
  285. BorderStyle    = 2;
  286.  
  287. Menus[N] = DefineWindow(
  288.       WindowRow,WindowCol,WindowLength,WindowLines,
  289.       BorderStyle,
  290.       ConfigRec.PopUpBorderBg,
  291.       ConfigRec.PopUpBorderFg,
  292.       WindowName,
  293.       ConfigRec.PopUpFootBg,
  294.       ConfigRec.PopUpFootFg,
  295.       WindowNamePos,
  296.       WindowFoot,
  297.       ConfigRec.PopUpFootBg,
  298.       ConfigRec.PopUpFootFg,
  299.       WindowFootPos,
  300.       ConfigRec.PopUpTextBg,
  301.       ConfigRec.PopUpTextFg);
  302. }
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320. void BuildMainMenu()
  321. {
  322. unsigned char LeftA  = 27;
  323. unsigned char RightA = 26;
  324. unsigned char UpA    = 24;
  325. unsigned char DnA    = 25;
  326. MenuBarStr[0] = 0;
  327. for (X=0;X<MenuBarItems;X++)
  328.     {
  329.     strcat(MenuBarStr,MenuBarSpacing);
  330.     strcat(MenuBarStr,MenuBarFields[X]);
  331.     }
  332.  
  333. strcat(MenuBarStr,"  Mouse:");
  334.  
  335. if  (S_MouseInstalled)
  336.     strcat(MenuBarStr,"YES");
  337. else
  338.     strcat(MenuBarStr,"NO ");
  339.  
  340. strcat(MenuBarStr,"  Use:<ENTER> ");
  341. WorkStr[0] = LeftA;
  342. WorkStr[1] = 32;
  343. WorkStr[2] = RightA;
  344. WorkStr[3] = 0;
  345. strcat(MenuBarStr,WorkStr);
  346.  
  347. WindowRow      = 1;
  348. WindowCol      = 1;
  349. WindowLength   = 80;
  350. WindowLines    = 1;
  351. BorderStyle    = 0;
  352. WindowName[0]  = 0;
  353. WindowNamePos  = 0;
  354. WindowFoot[0]  = 0;
  355. WindowFootPos  = 0;
  356.  
  357. Menus[0] = DefineWindow(
  358.     WindowRow,WindowCol,WindowLength,WindowLines,
  359.     BorderStyle,
  360.     ConfigRec.MenuBorderBg,
  361.     ConfigRec.MenuBorderFg,
  362.     WindowName,
  363.     ConfigRec.MenuNameBg,
  364.     ConfigRec.MenuNameFg,
  365.     WindowNamePos,
  366.     WindowFoot,WindowFootBg,WindowFootFg,WindowFootPos,
  367.     ConfigRec.MenuTextBg,
  368.     ConfigRec.MenuTextFg);
  369.  
  370. WindowNamePos = 0;
  371.  
  372. WriteWindowLine("",Menus[0],1,W_Off,0,
  373.                 ConfigRec.MenuBarBg,
  374.                 ConfigRec.MenuBarFg,
  375.                 MenuBarStr);
  376.  
  377. WindowRow      = 2;
  378. WindowCol      = (long)strstr(MenuBarStr,MenuBarFields[0])
  379.                - (long)&MenuBarStr;
  380. strcpy(WindowFoot,"Use <ENTER>        ");
  381. WindowFoot[13] = UpA;
  382. WindowFoot[15] = DnA;
  383. WindowFoot[17] = LeftA;
  384. WindowFoot[19] = RightA;
  385. WindowFootPos  = 3;
  386. WindowLength   = 30;
  387. WindowLines    = 12;
  388. BorderStyle    = 3;
  389.  
  390. Menus[1] = DefineWindow(
  391.     WindowRow,WindowCol,WindowLength,WindowLines,
  392.     BorderStyle,
  393.     ConfigRec.PopUpBorderBg,
  394.     ConfigRec.PopUpBorderFg,
  395.     "",0,0,0,
  396.     WindowFoot,
  397.     ConfigRec.PopUpFootBg,
  398.     ConfigRec.PopUpFootFg,
  399.     WindowFootPos,
  400.     ConfigRec.PopUpTextBg,
  401.     ConfigRec.PopUpTextFg);
  402.  
  403. for (X=0;X<12;X++) WriteWindowLine("",Menus[1],X+1,W_Off,0,0,0,DemoMenu[X]);
  404.  
  405. WindowName[0]  = 0;
  406. WindowNamePos  = 0;
  407. WindowFoot[0]  = 0;
  408. WindowFootPos  = 0;
  409. WindowCol      = (long)strstr(MenuBarStr,MenuBarFields[2])
  410.                - (long)&MenuBarStr;
  411. WindowFoot[0]  = 0;
  412. WindowLength   = 9;
  413. WindowLines    = 4;
  414. BorderStyle    = 3;
  415.  
  416. Menus[2] = DefineWindow(
  417.     WindowRow,WindowCol,WindowLength,WindowLines,
  418.     BorderStyle,
  419.     ConfigRec.PopUpBorderBg,
  420.     ConfigRec.PopUpBorderFg,
  421.     "",0,0,0,
  422.     WindowFoot,
  423.     ConfigRec.PopUpFootBg,
  424.     ConfigRec.PopUpFootFg,
  425.     WindowFootPos,
  426.     ConfigRec.PopUpTextBg,
  427.     ConfigRec.PopUpTextFg);
  428.  
  429. for (X=0;X<4;X++) WriteWindowLine("",Menus[2],X+1,W_Off,0,0,0,ColorMenu[X]);
  430. }
  431.  
  432.  
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439.  
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446. void GetNextKey()
  447. {
  448. DoMouse = False;
  449. S_NextKey();
  450.  
  451. if  (S_Ms->MouseEvent)
  452.     {
  453.     S_AnalizeMouse();
  454.     if  (S_MsRow == 1)
  455.         {
  456.         if ((S_MsCol > 3)&&(S_MsCol < 16))
  457.            {
  458.            DoMouse    = True;
  459.            MainOption = 0;
  460.            if  ((CurrentCol > 3)&&(CurrentCol < 16))
  461.                S_Enter = True;
  462.            else
  463.                CurrentCol = S_MsCol;
  464.            }
  465.         if ((S_MsCol > 18)&&(S_MsCol < 29))
  466.            {
  467.            DoMouse = True;
  468.            MainOption = 1;
  469.            if  ((CurrentCol > 18)&&(CurrentCol < 29))
  470.                S_Enter = True;
  471.            else
  472.                CurrentCol = S_MsCol;
  473.            }
  474.         if ((S_MsCol >31)&&(S_MsCol < 45))
  475.            {
  476.            DoMouse = True;
  477.            MainOption = 2;
  478.            if  ((CurrentCol > 31)&&(CurrentCol < 45))
  479.                S_Enter = True;
  480.            else
  481.                CurrentCol = S_MsCol;
  482.            }
  483.         if ((S_MsCol > 47)&&(S_MsCol < 52))
  484.            {
  485.            DoMouse = True;
  486.            MainOption = 3;
  487.            if  ((CurrentCol > 47)&&(CurrentCol < 52))
  488.                S_Enter = True;
  489.            else
  490.                CurrentCol = S_MsCol;
  491.            }
  492.         }
  493.  
  494.     if (WindowActive)
  495.        {
  496.        if  ((MainOption == 0)&&
  497.             ((S_MsRow > 2)&&(S_MsRow < 16)) &&
  498.             ((S_MsCol > 3)&&(S_MsCol < 30)))
  499.             {
  500.             S_Enter  = True;
  501.             NewLine = S_MsRow - 2;
  502.             }
  503.         if  ((MainOption == 2) &&
  504.              ((S_MsRow > 2)&&(S_MsRow < 7))&&
  505.              ((S_MsCol > 31)&&(S_MsCol < 45)))
  506.             {
  507.             S_Enter  = True;
  508.             NewLine  = S_MsRow - 2;
  509.             }
  510.         }
  511.     S_ResetMouseFlags();
  512.     }
  513. }
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529. void ChangeWindowDemo()
  530. {
  531. char PassStr[81], TextStr[81];
  532. int  Row,Col,Typ,Len,
  533.      NewValue,
  534.      OffSet ,
  535.      Pos_Style,
  536.      Bg, Fg;
  537.  
  538. static char Text1[11][41] =
  539.         {"  This procedure will demonstrate how to",
  540.          "  change the windows visable attributes:",
  541.          "",
  542.          "  - Change the windows border style and ",
  543.          "    colors.",
  544.          "",
  545.          "  - Change the Heading and footer text,",
  546.          "    position, and colors.",
  547.          "",
  548.          "  - Change the Text background and",
  549.          "    forground colors."};
  550.  
  551. static char Text2[20][31] =
  552.        {"Border",
  553.         "",
  554.         " Style............(1..3)[    ]",
  555.         " BackGround.......(0..7)[    ]",
  556.         " ForeGround.......(0.15)[    ]",
  557.         "Window Name",
  558.         " Text:[                      ]",
  559.         " Position.........(0..3)[    ]",
  560.         " BackGround.......(0..7)[    ]",
  561.         " ForeGround.......(0.15)[    ]",
  562.         "Window Footer",
  563.         " Text:[                      ]",
  564.         " Position.........(0..3)[    ]",
  565.         " BackGround.......(0..7)[    ]",
  566.         " ForeGround.......(0.15)[    ]",
  567.         "Text",
  568.         "",
  569.         "",
  570.         " BackGround.......(0..7)[    ]",
  571.         " ForeGround.......(0.15)[    ]"};
  572.  
  573. S_HideMouse();
  574. S_SetMouseEvent("00000000");
  575.  
  576. OffSet = (((LastLine - 1)*5));
  577.  
  578. Menus[3] =
  579.   DefineWindow(7,37,40,11,
  580.     ConfigRec.ChgBorderStyle,
  581.     ConfigRec.ChgBorderBg,
  582.     ConfigRec.ChgBorderFg,
  583.     ConfigRec.ChgName,
  584.     ConfigRec.ChgNameBg,
  585.     ConfigRec.ChgNameFg,
  586.     ConfigRec.ChgNamePos,
  587.     ConfigRec.ChgFooter,
  588.     ConfigRec.ChgFootBg,
  589.     ConfigRec.ChgFootFg,
  590.     ConfigRec.ChgFootPos,
  591.     ConfigRec.ChgTextBg,
  592.     ConfigRec.ChgTextFg);
  593.  
  594. strcpy(WindowName,Text2[OffSet]);
  595. WindowNamePos = 1;
  596. strcpy(WindowFoot,"<ESC> to Quit");
  597. WindowFootPos = 1;
  598.  
  599. BuildOneWindow(4,11,7,30,4);
  600.  
  601. WindowName[0] = 0;
  602. WindowNamePos = 0;
  603. WindowFoot[0] = 0;
  604. WindowFootPos = 0;
  605.  
  606. for (X=0;X<4;X++)
  607.     WriteWindowLine("",Menus[4],X+1,W_Off,0,0,0,Text2[OffSet+X+1]);
  608.  
  609. for (X=0;X<10;X++)
  610.     WriteWindowLine("",Menus[3],X+1,W_Off,0,0,0,Text1[X]);
  611.  
  612. OpenWindow("",Menus[3]);
  613. OpenWindow("",Menus[4]);
  614.  
  615. X = 1;
  616.  
  617. do{
  618.       switch (LastLine)
  619.         {
  620.         case 2 : {strcpy(PassStr,ConfigRec.ChgName);break;}
  621.         case 3 : {strcpy(PassStr,ConfigRec.ChgFooter);break;}
  622.         default: {PassStr[0] = 0;}
  623.         }
  624.  
  625.       WriteWindowField("",Menus[4],1,8,9,20,
  626.              ConfigRec.PopUpTextBg,ConfigRec.PopUpTextFg,
  627.              ConfigRec.PopUpTextBg,ConfigRec.PopUpTextFg,PassStr);
  628.  
  629.       switch (LastLine)
  630.         {
  631.         case 1 : {itoa(ConfigRec.ChgBorderStyle,PassStr,10);break;}
  632.         case 2 : {itoa(ConfigRec.ChgNamePos,PassStr,10);break;}
  633.         case 3 : {itoa(ConfigRec.ChgFootPos,PassStr,10);break;}
  634.         default: PassStr[0]=0;
  635.         }
  636.       if (LastLine != 4)
  637.          WriteWindowField("",Menus[4],2,26,0,2,
  638.              ConfigRec.PopUpTextBg,ConfigRec.PopUpTextFg,
  639.              ConfigRec.PopUpTextBg,ConfigRec.PopUpTextFg,PassStr);
  640.  
  641.       switch (LastLine)
  642.         {
  643.         case 1 : {itoa(ConfigRec.ChgBorderBg,PassStr,10);break;}
  644.         case 2 : {itoa(ConfigRec.ChgNameBg,PassStr,10);break;}
  645.         case 3 : {itoa(ConfigRec.ChgFootBg,PassStr,10);break;}
  646.         case 4 : {itoa(ConfigRec.ChgTextBg,PassStr,10);break;}
  647.         }
  648.  
  649.       WriteWindowField("",Menus[4],3,26,0,2,
  650.             ConfigRec.PopUpTextBg,ConfigRec.PopUpTextFg,
  651.             ConfigRec.PopUpTextBg,ConfigRec.PopUpTextFg,PassStr);
  652.  
  653.       switch (LastLine)
  654.         {
  655.         case 1 : {itoa(ConfigRec.ChgBorderFg,PassStr,10);break;}
  656.         case 2 : {itoa(ConfigRec.ChgNameFg,PassStr,10);break;}
  657.         case 3 : {itoa(ConfigRec.ChgFootFg,PassStr,10);break;}
  658.         case 4 : {itoa(ConfigRec.ChgTextFg,PassStr,10);break;}
  659.         }
  660.  
  661.       WriteWindowField("",Menus[4],4,26,0,2,
  662.            ConfigRec.PopUpTextBg,ConfigRec.PopUpTextFg,
  663.            ConfigRec.PopUpTextBg,ConfigRec.PopUpTextFg,PassStr);
  664.  
  665.       switch (LastLine)
  666.          {
  667.          case 1: {
  668.                  if (X < 3)
  669.                     {
  670.                     itoa(ConfigRec.ChgBorderStyle,PassStr,10);
  671.                     X   = 2;
  672.                     Row = 2;
  673.                     }
  674.                  if (X == 3)
  675.                     {
  676.                     itoa(ConfigRec.ChgBorderBg,PassStr,10);
  677.                     Row = 3;
  678.                     }
  679.                  if (X == 4)
  680.                     {
  681.                     itoa(ConfigRec.ChgBorderFg,PassStr,10);
  682.                     Row =4;
  683.                     }
  684.                  Col     = 27;
  685.                  Typ     = 0;
  686.                  Len     = 2;
  687.                  break;
  688.                  }
  689.          case 2: {
  690.                  if (X == 1)
  691.                     {
  692.                     strcpy(PassStr,ConfigRec.ChgName);
  693.                     Row     = 1;
  694.                     Col     = 9;
  695.                     Typ     = 9;
  696.                     Len     = 20;
  697.                     }
  698.                  else
  699.                     {
  700.                     if (X == 2)
  701.                        {
  702.                        itoa(ConfigRec.ChgNamePos,PassStr,10);
  703.                        X   = 2;
  704.                        Row = 2;
  705.                        }
  706.                     if (X == 3)
  707.                        {
  708.                        itoa(ConfigRec.ChgNameBg,PassStr,10);
  709.                        Row = 3;
  710.                        }
  711.                     if (X == 4)
  712.                        {
  713.                        itoa(ConfigRec.ChgNameFg,PassStr,10);
  714.                        Row = 4;
  715.                        }
  716.                     Col     = 27;
  717.                     Typ     = 0;
  718.                     Len     = 2;
  719.                     }
  720.                 break;
  721.                 }
  722.          case 3:{
  723.                 if  (X == 1)
  724.                     {
  725.                     strcpy(PassStr,ConfigRec.ChgFooter);
  726.                     Row     = 1;
  727.                     Col     = 9;
  728.                     Typ     = 9;
  729.                     Len     = 20;}
  730.                  else
  731.                     {
  732.                     if (X == 2)
  733.                        {
  734.                        itoa(ConfigRec.ChgFootPos,PassStr,10);
  735.                        X   = 2;
  736.                        Row = 2;
  737.                        }
  738.                     if (X == 3)
  739.                        {
  740.                        itoa(ConfigRec.ChgFootBg,PassStr,10);
  741.                        Row = 3;
  742.                        }
  743.                     if (X == 4)
  744.                        {
  745.                        itoa(ConfigRec.ChgFootFg,PassStr,10);
  746.                        Row = 4;
  747.                        }
  748.                     Col     = 27;
  749.                     Typ     = 0;
  750.                     Len     = 2;
  751.                     }
  752.                 break;
  753.                 }
  754.          case 4:{
  755.                 if (X < 4)
  756.                    {
  757.                    X = 3;
  758.                    itoa(ConfigRec.ChgTextBg,PassStr,10);
  759.                    Row = 3;
  760.                    }
  761.                 if (X == 4)
  762.                    {
  763.                    itoa(ConfigRec.ChgTextFg,PassStr,10);
  764.                    Row = 4;
  765.                    }
  766.                 Col     = 27;
  767.                 Typ     = 0;
  768.                 Len     = 2;
  769.                 break;
  770.                 }
  771.           }
  772.  
  773.    PauseWindowUpdates(False);
  774.  
  775.    ReadWindowField("",Menus[4],Row,Col,Typ,Len,
  776.                    ConfigRec.PopUpBarBg,
  777.                    ConfigRec.PopUpBarFg,
  778.                    PassStr);
  779.  
  780.    NewValue = atoi(PassStr);
  781.  
  782.    PauseWindowUpdates(True);
  783.  
  784.    switch (LastLine)
  785.       {
  786.       case 1:{switch (X)
  787.                {
  788.                case 2 : {ConfigRec.ChgBorderStyle = NewValue;break;}
  789.                case 3 : {ConfigRec.ChgBorderBg    = NewValue;break;}
  790.                case 4 : {ConfigRec.ChgBorderFg    = NewValue;break;}
  791.                }
  792.              break;
  793.              }
  794.       case 2:{switch (X)
  795.                {
  796.                case 1 : {strcpy(ConfigRec.ChgName,PassStr);  break;}
  797.                case 2 : {ConfigRec.ChgNamePos = NewValue; break;}
  798.                case 3 : {ConfigRec.ChgNameBg  = NewValue; break;}
  799.                case 4 : {ConfigRec.ChgNameFg  = NewValue; break;}
  800.                }
  801.              break;
  802.              }
  803.       case 3:{switch (X)
  804.                {
  805.                case 1 : {strcpy(ConfigRec.ChgFooter,PassStr);break;}
  806.                case 2 : {ConfigRec.ChgFootPos = NewValue;break;}
  807.                case 3 : {ConfigRec.ChgFootBg = NewValue;break;}
  808.                case 4 : {ConfigRec.ChgFootFg = NewValue;break;}
  809.                }
  810.              break;
  811.              }
  812.       case 4:{switch (X)
  813.                {
  814.                case 3 : {ConfigRec.ChgTextBg  = NewValue;break;}
  815.                case 4 : {ConfigRec.ChgTextFg  = NewValue;break;}
  816.                }
  817.              break;
  818.              }
  819.       }
  820.  
  821.    ChangeWindow("",Menus[3],
  822.       ConfigRec.ChgBorderStyle,
  823.       ConfigRec.ChgBorderBg,
  824.       ConfigRec.ChgBorderFg,
  825.       ConfigRec.ChgName,
  826.       ConfigRec.ChgNameBg,
  827.       ConfigRec.ChgNameFg,
  828.       ConfigRec.ChgNamePos,
  829.       ConfigRec.ChgFooter,
  830.       ConfigRec.ChgFootBg,
  831.       ConfigRec.ChgFootFg,
  832.       ConfigRec.ChgFootPos,
  833.       ConfigRec.ChgTextBg,
  834.       ConfigRec.ChgTextFg);
  835.  
  836.    if  (S_Up)
  837.        {
  838.        S_Tab   = True;
  839.        S_Shift = True;
  840.        }
  841.  
  842.    if  (S_Down)
  843.        S_Tab = True;
  844.  
  845.    if  (S_Tab)
  846.        if  (S_Shift) X--; else X++;
  847.  
  848.    switch (LastLine)
  849.      {
  850.      case 1:{
  851.             if (X > 4) X = 2; else if (X < 2) X = 4;
  852.             break;
  853.             }
  854.      case 2:
  855.      case 3:{
  856.             if (X > 4) X = 1; else if (X < 1) X = 4;
  857.             break;
  858.             }
  859.      case 4:{
  860.             if (X > 4) X = 3; else if (X < 3) X = 4;
  861.             break;
  862.             }
  863.      }
  864. }while (!S_Esc);
  865.  
  866. EraseWindow("",Menus[3]);
  867. EraseWindow("",Menus[4]);
  868. S_ResetKeyFlags();
  869. S_ResetMouseFlags();
  870. S_SetMouseEvent("01000000");
  871. S_ShowMouse();
  872. }
  873.  
  874.  
  875.  
  876.  
  877.  
  878.  
  879.  
  880.  
  881.  
  882.  
  883.  
  884.  
  885.  
  886.  
  887.  
  888.  
  889.  
  890.  
  891. void DataEntryDemo()
  892. {
  893. char PassStr[81];
  894. long Months[12];
  895. long Row, Col, Mth,
  896.      Range, Amount;
  897.  
  898. static char Graph[19][81] =
  899.    {"                     ** 1989 Bakery Sales **                      ",
  900.     "──────────────────────────────────────────────────────────────────",
  901.     "     +    -                                               -   +   ",
  902.     "G 110,000 -                                               -110,000",
  903.     "r         -                                               -       ",
  904.     "o  90,000 -                                               - 90,000",
  905.     "s         -                                               -       ",
  906.     "s  70,000 -                                               - 70,000",
  907.     "          -                                               -       ",
  908.     "S  50,000 -                                               - 50,000",
  909.     "a         -                                               -       ",
  910.     "l  30,000 -                                               - 30,000",
  911.     "e         -                                               -       ",
  912.     "s  10,000 -                                               - 10,000",
  913.     "──────────────────────────────────────────────────────────────────",
  914.     "           Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec        ",
  915.     "──────────────────────────────────────────────────────────────────",
  916.     "Jan 120000 Feb 110000 Mar 100000 Apr 90000  May 80000  Jun 70000  ",
  917.     "Jul 60000  Aug 50000  Sep 40000  Oct 30000  Nov 20000  Dec 10000  "};
  918.  
  919. S_HideMouse();
  920. S_SetMouseEvent("00000000");
  921.  
  922. strcpy(WindowFoot,"<ENTER> = REDraw graph      <ESC> = exit");
  923. WindowFootPos = 3;
  924.  
  925. BuildOneWindow(3,2,4,67,19);
  926.  
  927. WindowFootPos = 0;
  928.  
  929. Range = 120000;
  930.  
  931. OpenWindow("",Menus[3]);
  932.  
  933. PauseWindowUpdates(False);
  934.  
  935. for(X=0;X<19;X++){
  936.     if  (X < 12)  Months[X] = Range;
  937.     Range -= 10000;
  938.     if ((X<2)||(X>13))
  939.         WriteWindowLine("",Menus[3],X+1,W_Off,0,0,0,Graph[X]);
  940.     else
  941.         WriteWindowLine("",Menus[3],X+1,W_Off,0,ConfigRec.PopUpTextBg,15,Graph[X]);}
  942.  
  943. Row     = 18;
  944. Col     = 0;
  945. Mth     = 0;
  946.  
  947. PassStr[0]=0;
  948. S_Enter = True;
  949.  
  950. do{
  951.   if  (S_Enter){
  952.       Range = 110000;
  953.       for (X=3;X<15;X++){
  954.           for (Y=0;Y<12;Y++){
  955.               if (((X==3) && (Months[Y] > Range)) ||
  956.                   ((X>3)  && (Months[Y] > Range))){
  957.                  textcolor(Y+2);
  958.                  strcpy(PassStr,"▒▒▒");}
  959.               else{
  960.                  strcpy(PassStr,"   ");
  961.                  textcolor(15);}
  962.  
  963.               gotoxy(12+(Y*4),X);
  964.  
  965.               cprintf(PassStr);}
  966.           Range-=10000;}
  967.       }
  968.  
  969.    SaveWindow();
  970.    PassStr[0]=0;
  971.  
  972.    ltoa(Months[Mth],PassStr,10);
  973.  
  974.    ReadWindowField("",Menus[3],Row,(Col*11)+5,0,6,7,0,PassStr);
  975.  
  976.    Months[Mth] = atol(PassStr);
  977.  
  978.    if  (S_Tab)
  979.        {
  980.        if  (S_Shift)
  981.            {
  982.            Col--;
  983.            Mth--;
  984.            if  (Col < 0)
  985.                {
  986.                Col = 5;
  987.                Mth = 5;
  988.                if  (Row == 19)
  989.                    Row = 18;
  990.                else
  991.                    {
  992.                    Row = 19;
  993.                    Mth = 11;
  994.                    }
  995.                }
  996.            }
  997.        else
  998.            {
  999.            Col++;
  1000.            Mth++;
  1001.            if  (Col > 5)
  1002.                {
  1003.                Col = 0;
  1004.                Mth = 0;
  1005.                if  (Row == 19)
  1006.                    Row = 18;
  1007.                else
  1008.                    {
  1009.                    Row = 19;
  1010.                    Mth = 6;
  1011.                    }
  1012.                }
  1013.            }
  1014.        }
  1015.  
  1016. }while (!S_Esc);
  1017.  
  1018. EraseWindow("",Menus[3]);
  1019.  
  1020. S_ResetKeyFlags();
  1021. S_ResetMouseFlags();
  1022. S_SetMouseEvent("01000000");
  1023. S_ShowMouse();
  1024. }
  1025.  
  1026.  
  1027.  
  1028.  
  1029.  
  1030.  
  1031.  
  1032.  
  1033.  
  1034.  
  1035.  
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041.  
  1042. void OpenAndShutFiftyWindows()
  1043. {
  1044. PauseWindowUpdates(False);
  1045. RandomWindows(50);
  1046.  
  1047. PopWindow("",Menus[0]);
  1048. PopWindow("",Menus[1]);
  1049.  
  1050. if (OutOfMem==0) OutOfMem = 52;
  1051. for (X=3;X<(OutOfMem+1);X++) OpenWindow("",Menus[X]);
  1052.  
  1053. PopWindow("",Menus[OutOfMem]);
  1054. ClearWindow("",Menus[OutOfMem],0,0);
  1055.  
  1056. if (OutOfMem==52)
  1057.    cprintf("** Press Any Key To Continue **");
  1058. else
  1059.    cprintf("** Not enough memory for 50 windows..Press any key to continue.");
  1060.  
  1061. S_NextKey();
  1062.  
  1063. for (X=OutOfMem;X>2;X--) ShutWindow("",Menus[X]);
  1064.  
  1065. PauseWindowUpdates(True);
  1066. for (X=3;X<(OutOfMem+1);X++)
  1067.     {
  1068.     EraseWindow("",Menus[X]);
  1069.     }
  1070. }
  1071.  
  1072.  
  1073.  
  1074.  
  1075.  
  1076.  
  1077.  
  1078.  
  1079.  
  1080.  
  1081.  
  1082.  
  1083.  
  1084.  
  1085. void MoveAWindow()
  1086. {
  1087. BuildOneWindow(3,10,10,40,6);
  1088. WriteWindowLine("",Menus[3],1,W_Off,0,0,0,"A windows can be moved to any location");
  1089. WriteWindowLine("",Menus[3],2,W_Off,0,0,0,"on the screen by using the MOVEWINDOW");
  1090. WriteWindowLine("",Menus[3],3,W_Off,0,0,0,"statement......");
  1091. WriteWindowLine("",Menus[3],4,W_Off,0,0,0,"");
  1092. WriteWindowLine("",Menus[3],5,W_Off,0,0,0,"Each Time you press the Enter Key I will");
  1093. WriteWindowLine("",Menus[3],6,W_Off,0,0,0,"MOVE this window.. Press ESC to Quit");
  1094.  
  1095. PauseWindowUpdates(False);
  1096. S_HideMouse();
  1097. S_SetMouseEvent("00000000");
  1098. OpenWindow("",Menus[3]);
  1099.  
  1100. do
  1101.   {
  1102.   S_NextKey();
  1103.   if  (S_Enter)
  1104.       MoveWindow("",Menus[3],random(18),random(40),'a');
  1105.   }
  1106. while (!S_Esc);
  1107.  
  1108. EraseWindow("",Menus[3]);
  1109. PauseWindowUpdates(True);
  1110. S_ResetKeyFlags();
  1111. S_ResetMouseFlags();
  1112. S_SetMouseEvent("01000000");
  1113. S_ShowMouse();
  1114. };
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.  
  1127. void DragAWindow()
  1128. {
  1129. int Row = 3,Col = 10;
  1130. BuildOneWindow(3,Row,Col,40,6);
  1131. WriteWindowLine("",Menus[3],1,W_Off,0,0,0,"'DRAGGING' windows around on the screen");
  1132. WriteWindowLine("",Menus[3],2,W_Off,0,0,0,"is easy using the MOVEWINDOW statement");
  1133. WriteWindowLine("",Menus[3],3,W_Off,0,0,0,"and specifying rows and columns. Use the");
  1134. WriteWindowLine("",Menus[3],4,W_Off,0,0,0,"keypad keys to move this window or hold ");
  1135. WriteWindowLine("",Menus[3],5,W_Off,0,0,0,"the left mouse button down and drag it..");
  1136. WriteWindowLine("",Menus[3],6,W_Off,0,0,0,"------------ Pess ESC to Quit-----------");
  1137.  
  1138. PauseWindowUpdates(False);
  1139. OpenWindow("",Menus[3]);
  1140.  
  1141. do
  1142.   {
  1143.   S_NextKey();
  1144.   if  (S_Ms->MouseEvent)
  1145.       {
  1146.       S_SetMouseEvent("10100000");
  1147.       S_AnalizeMouse();
  1148.       do
  1149.         {
  1150.         MoveWindow("",Menus[3],S_MsRow,S_MsCol,'a'); /* a = Absolute screen location */
  1151.         S_NextKey();
  1152.         if  (S_Ms->MouseEvent) S_AnalizeMouse();
  1153.         }
  1154.       while (!S_MsLeftReleased);
  1155.       S_SetMouseEvent("01000000");
  1156.       S_ResetMouseFlags();
  1157.       }
  1158.   else
  1159.       {
  1160.       Row = 0;
  1161.       Col = 0;
  1162.       if  ((S_Up)   || (S_PgUp) || (S_Home)) Row = -1;
  1163.       if  ((S_Down) || (S_PgDn) || (S_End))  Row =  1;
  1164.       if  ((S_Left) || (S_Home) || (S_End))  Col = -1;
  1165.       if  ((S_Right)|| (S_PgUp) || (S_PgDn)) Col =  1;
  1166.  
  1167.       MoveWindow("",Menus[3],Row,Col,'r'); /* r = Relative screen location */
  1168.       };
  1169.  
  1170. }while (!S_Esc);
  1171.  
  1172. EraseWindow("",Menus[3]);
  1173. PauseWindowUpdates(True);
  1174. S_ResetKeyFlags();
  1175. S_ResetMouseFlags();
  1176. }
  1177.  
  1178.  
  1179.  
  1180.  
  1181.  
  1182.  
  1183.  
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.  
  1193.  
  1194. void MoveSeveralWindows()
  1195. {
  1196. RandomWindows(10);
  1197. BuildOneWindow(13,20,1,78,3);
  1198. WriteWindowLine("",Menus[13],1,W_Off,0,0,0,
  1199. "Turbo ScrEdit allows you to perform many window functions concurrently on the");
  1200. WriteWindowLine("",Menus[13],2,W_Off,0,0,0,
  1201. "screen with one or more windows.  Press Enter to see how smoothly 10 windows");
  1202. WriteWindowLine("",Menus[13],3,W_Off,0,0,0,
  1203. "can be moved at the same time.. <ESC> to exit  <ENTER> for demo.");
  1204.  
  1205. PauseWindowUpdates(False);
  1206. for(X=3;X<14;X++)
  1207.     OpenWindow("",Menus[X]);
  1208.  
  1209. do{
  1210.   S_NextKey();
  1211.  
  1212.   if (S_Ms->MouseEvent) S_AnalizeMouse();
  1213.  
  1214.   if (S_Enter)
  1215.      {
  1216.      for (Z=0;Z<1;Z++)
  1217.          {
  1218.          for (Y=0;Y<20;Y++)
  1219.              {
  1220.              PauseWindowUpdates(True);
  1221.              for (X=3;X<13;X++)
  1222.                  {
  1223.                  if  ((X%4)==0) MoveWindow("",Menus[X],-1,0,'r');
  1224.                  if  ((X%4)==1) MoveWindow("",Menus[X],0,-3,'r');
  1225.                  if  ((X%4)==2) MoveWindow("",Menus[X],1,0,'r');
  1226.                  if  ((X%4)==3) MoveWindow("",Menus[X],0,4,'r');
  1227.                  }
  1228.              PauseWindowUpdates(False);
  1229.              }
  1230.          for (Y=0;Y<20;Y++)
  1231.              {
  1232.              PauseWindowUpdates(True);
  1233.              for (X=3;X<13;X++)
  1234.                  {
  1235.                  if  ((X%4)==0) MoveWindow("",Menus[X],1,0,'r');
  1236.                  if  ((X%4)==1) MoveWindow("",Menus[X],0,4,'r');
  1237.                  if  ((X%4)==2) MoveWindow("",Menus[X],-1,0,'r');
  1238.                  if  ((X%4)==3) MoveWindow("",Menus[X],0,-3,'r');
  1239.                  };
  1240.              PauseWindowUpdates(False);
  1241.              }
  1242.          }
  1243.      }
  1244.  
  1245. ClearWindow("",Menus[13],0,0);
  1246. WriteWindowLine("",Menus[13],2,W_Off,0,0,0,
  1247. "Press ENTER again to repeat or ESC to exit back to the menu... ");
  1248.  
  1249. }while (!S_Esc);
  1250. for(X=3;X<14;EraseWindow("",Menus[X++]));
  1251. PauseWindowUpdates(True);
  1252. S_ResetKeyFlags();
  1253. S_ResetMouseFlags();
  1254. }
  1255.  
  1256.  
  1257.  
  1258.  
  1259.  
  1260.  
  1261.  
  1262.  
  1263.  
  1264.  
  1265.  
  1266.  
  1267.  
  1268.  
  1269.  
  1270.  
  1271.  
  1272. void WriteToWindowLines()
  1273. {
  1274. int Row;
  1275. char LineIn[255];
  1276. char Texts[255];
  1277. char PassStr[81];
  1278.  
  1279. S_HideMouse();
  1280. S_SetMouseEvent("00000000");
  1281.  
  1282. BuildOneWindow(3,19,1,78,4);
  1283. BuildOneWindow(4,10,1,78,6);
  1284.  
  1285. WriteWindowLine("",Menus[3],1,W_Off,0,0,0,
  1286. "Enter a line number and a itoaing of text to be written to the specified line");
  1287. WriteWindowLine("",Menus[3],2,W_Off,0,0,0,
  1288. "in the window above.. Press <ESC> to exit...................................");
  1289. WriteWindowLine("",Menus[3],3,W_Off,0,0,0,
  1290. "Line Number     Text:");
  1291.  
  1292. WriteWindowLine("",Menus[4],1,W_Off,0,0,0,"1 -");
  1293. WriteWindowLine("",Menus[4],2,W_Off,0,0,0,"2 -");
  1294. WriteWindowLine("",Menus[4],3,W_Off,0,0,0,"3 -");
  1295. WriteWindowLine("",Menus[4],4,W_Off,0,0,0,"4 -");
  1296. WriteWindowLine("",Menus[4],5,W_Off,0,0,0,"5 -");
  1297. WriteWindowLine("",Menus[4],6,W_Off,0,0,0,"6 -");
  1298.  
  1299. OpenWindow("",Menus[3]);
  1300. OpenWindow("",Menus[4]);
  1301.  
  1302. PauseWindowUpdates(False);
  1303. S_SetCursor(S_BOLD);
  1304.  
  1305. do{
  1306.      PassStr[0]=0;
  1307.      ReadWindowField("",Menus[3],3,13,0,1,7,0,PassStr);
  1308.      strcpy(LineIn,PassStr);
  1309.  
  1310.      if  (!S_Esc)
  1311.          {
  1312.          Row=atoi(PassStr);
  1313.          if  ((Row>0)&&(Row<7))
  1314.              {
  1315.              WriteWindowLine("",Menus[3],4,W_Off,0,0,0," ");
  1316.              PassStr[0]=0;
  1317.              ReadWindowField("",Menus[3],3,23,9,54,7,0,PassStr);
  1318.              strcpy(Texts,LineIn);
  1319.              strcat(Texts," - ");
  1320.              strcat(Texts,PassStr);
  1321.              WriteWindowLine("",Menus[4],Row,W_Off,0,0,0,Texts);
  1322.              }
  1323.          else
  1324.              WriteWindowLine("",Menus[3],4,W_Off,0,RED,YELLOW,
  1325.                   "**** ERROR ****  WindowField Must be in range of 1 to 6..");
  1326.          }
  1327. }while (!S_Esc);
  1328.  
  1329. S_SetCursor(S_OFF);
  1330. EraseWindow("",Menus[3]);
  1331. EraseWindow("",Menus[4]);
  1332. S_ShowMouse();
  1333. S_SetMouseEvent("01000000");
  1334.  
  1335. PauseWindowUpdates(True);
  1336. S_ResetKeyFlags();
  1337. S_ResetMouseFlags();
  1338. }
  1339.  
  1340.  
  1341.  
  1342.  
  1343.  
  1344.  
  1345.  
  1346.  
  1347.  
  1348.  
  1349.  
  1350.  
  1351.  
  1352.  
  1353.  
  1354.  
  1355.  
  1356.  
  1357.  
  1358. void WritingWithScrolling()
  1359. {
  1360. char PassStr[81];
  1361. static char Message[14][51] =
  1362.            {".................................................",
  1363.             "With Turbo ScrEdit Windows you can turn on scrol-",
  1364.             "ling and have a specified number of lines scroll ",
  1365.             "up in the window before the new line is written. ",
  1366.             "PRESS ENTER for a demonstration.",
  1367.             "..................................................",
  1368.  
  1369.             "Turbo ScrEdit Windows adds a new twist by allowing",
  1370.             "you specify any number of lines in the window that",
  1371.             "are to be scrolled DOWN in the window before the ",
  1372.             "new line is written. PRESS ENTER to continue.",
  1373.  
  1374.             "You can use these features to write and scroll",
  1375.             "text independently in more than one area of a  ",
  1376.             "window at the same time.. You can even write to",
  1377.             "more than one window at a time.. PRESS ENTER"};
  1378.  
  1379. S_HideMouse();
  1380. S_SetMouseEvent("00000000");
  1381.  
  1382. BuildOneWindow(3,8,1 ,50,14);
  1383. BuildOneWindow(4,4 ,12,50,14);
  1384. BuildOneWindow(5,1 ,24,50,14);
  1385.  
  1386. PauseWindowUpdates(False);
  1387. PopWindow ("",Menus[4]);
  1388. OpenWindow("",Menus[3]);
  1389. OpenWindow("",Menus[4]);
  1390. OpenWindow("",Menus[5]);
  1391.  
  1392. setmem(PassStr,80,32);
  1393. PassStr[80]=0;
  1394.  
  1395. for (X=0;X<6;X++)
  1396.     {
  1397.     PauseWindowUpdates(True);
  1398.     WriteWindowLine("",Menus[3],14,W_Up,0,BLACK,WHITE,Message[X]);
  1399.     WriteWindowLine("",Menus[4],14,W_Up,0,BLACK,WHITE,Message[X]);
  1400.     WriteWindowLine("",Menus[5],14,W_Up,0,BLACK,WHITE,Message[X]);
  1401.     PauseWindowUpdates(False);
  1402.     };
  1403.  
  1404. S_NextKey();
  1405.  
  1406. for (X=0;X<8;X++)
  1407.    {
  1408.    PauseWindowUpdates(True);
  1409.    setmem(PassStr,80,32);
  1410.    setmem((char *)&PassStr[X],5,65+X);
  1411.    WriteWindowLine("",Menus[3],14,W_Up,0,0,0,PassStr);
  1412.    WriteWindowLine("",Menus[4],14,W_Up,0,0,0,PassStr);
  1413.    WriteWindowLine("",Menus[5],14,W_Up,0,0,0,PassStr);
  1414.    PauseWindowUpdates(False);
  1415.    }
  1416.  
  1417. for (X=6;X<10;X++)
  1418.    {
  1419.    PauseWindowUpdates(True);
  1420.    WriteWindowLine("",Menus[3],5,W_Up,3,BLACK,WHITE,Message[X]);
  1421.    WriteWindowLine("",Menus[4],5,W_Up,3,BLACK,WHITE,Message[X]);
  1422.    WriteWindowLine("",Menus[5],5,W_Up,3,BLACK,WHITE,Message[X]);
  1423.    PauseWindowUpdates(False);
  1424.    };
  1425.  
  1426. S_NextKey();
  1427.  
  1428. for (X=0;X<4;X++)
  1429.    {
  1430.    PauseWindowUpdates(True);
  1431.    setmem(PassStr,80,32);
  1432.    setmem((char *)&PassStr[X],5,65+X);
  1433.    WriteWindowLine("",Menus[3],1,W_Down,0,0,0,PassStr);
  1434.    WriteWindowLine("",Menus[4],1,W_Down,0,0,0,PassStr);
  1435.    WriteWindowLine("",Menus[5],1,W_Down,0,0,0,PassStr);
  1436.    PauseWindowUpdates(False);
  1437.    }
  1438.  
  1439. for (X=9;X<14;X++)
  1440.    {
  1441.    PauseWindowUpdates(True);
  1442.    WriteWindowLine("",Menus[3],9,W_Up,3,BLACK,WHITE,Message[X]);
  1443.    WriteWindowLine("",Menus[4],9,W_Up,3,BLACK,WHITE,Message[X]);
  1444.    WriteWindowLine("",Menus[5],9,W_Up,3,BLACK,WHITE,Message[X]);
  1445.    PauseWindowUpdates(False);
  1446.    }
  1447.  
  1448. S_NextKey();
  1449.  
  1450. for (X=0;X<45;X++)
  1451.    {
  1452.    setmem(PassStr,80,32);
  1453.    setmem((char *)&PassStr[X],5,65+X);
  1454.    PauseWindowUpdates(True);
  1455.    WriteWindowLine("",Menus[3],4, W_Up,  4,0,0,PassStr);
  1456.    WriteWindowLine("",Menus[3],11,W_Down,4,0,0,PassStr);
  1457.    WriteWindowLine("",Menus[4],4, W_Up,  4,0,0,PassStr);
  1458.    WriteWindowLine("",Menus[4],11,W_Down,4,0,0,PassStr);
  1459.    WriteWindowLine("",Menus[5],4, W_Up,  4,0,0,PassStr);
  1460.    WriteWindowLine("",Menus[5],11,W_Down,4,0,0,PassStr);
  1461.    PauseWindowUpdates(False);
  1462.    }
  1463.  
  1464. for (X=45;X>-1;X--)
  1465.    {
  1466.    setmem(PassStr,80,32);
  1467.    setmem((char *)&PassStr[X],5,65+X);
  1468.    PauseWindowUpdates(True);
  1469.    WriteWindowLine("",Menus[3],4, W_Up,  4,0,0,PassStr);
  1470.    WriteWindowLine("",Menus[3],11,W_Down,4,0,0,PassStr);
  1471.    WriteWindowLine("",Menus[4],4, W_Up,  4,0,0,PassStr);
  1472.    WriteWindowLine("",Menus[4],11,W_Down,4,0,0,PassStr);
  1473.    WriteWindowLine("",Menus[5],4, W_Up,  4,0,0,PassStr);
  1474.    WriteWindowLine("",Menus[5],11,W_Down,4,0,0,PassStr);
  1475.    PauseWindowUpdates(False);
  1476.    }
  1477.  
  1478. S_NextKey();
  1479.  
  1480. EraseWindow("",Menus[3]);
  1481. EraseWindow("",Menus[4]);
  1482. EraseWindow("",Menus[5]);
  1483.  
  1484. S_ShowMouse();
  1485. S_SetMouseEvent("01000000");
  1486. PauseWindowUpdates(True);
  1487. S_ResetKeyFlags();
  1488. S_ResetMouseFlags();
  1489. }
  1490.  
  1491.  
  1492.  
  1493.  
  1494.  
  1495.  
  1496.  
  1497.  
  1498.  
  1499.  
  1500.  
  1501.  
  1502.  
  1503.  
  1504.  
  1505.  
  1506.  
  1507.  
  1508. void ReadingWindowLines()
  1509. {
  1510. char PassStr[81];
  1511. S_HideMouse();
  1512. S_SetMouseEvent("00000000");
  1513.  
  1514. BuildOneWindow(3,5,1,30,11);
  1515. BuildOneWindow(4,5,50,30,11);
  1516. BuildOneWindow(5,18,20,40,4);
  1517.  
  1518. OpenWindow("",Menus[3]);
  1519. OpenWindow("",Menus[4]);
  1520. OpenWindow("",Menus[5]);
  1521.  
  1522. PopWindow("",Menus[4]);
  1523.  
  1524. PauseWindowUpdates(False);
  1525.  
  1526. textcolor(YELLOW);
  1527. textbackground(BLACK);
  1528.  
  1529. clrscr();
  1530.  
  1531. PassStr[28]=0;
  1532.  
  1533. for (X=0;X<10;X++)
  1534.     {
  1535.     setmem(PassStr,28,65+X);
  1536.     cprintf("%s\r\n",PassStr);
  1537.     }
  1538.  
  1539. SaveWindow();
  1540. PopWindow("",Menus[4]);
  1541.  
  1542. WriteWindowLine("",Menus[5],1,W_Off,0,0,0,"Each time you press the ENTER key I  ");
  1543. WriteWindowLine("",Menus[5],2,W_Off,0,0,0,"will read a line of text from the ");
  1544. WriteWindowLine("",Menus[5],3,W_Off,0,0,0,"window on the RIGHT and write it to ");
  1545. WriteWindowLine("",Menus[5],4,W_Off,0,0,0,"window on the left.... ESC to EXIT");
  1546.  
  1547. X = -1;
  1548.  
  1549. do{
  1550.    S_NextKey();
  1551.    if  (S_Enter)
  1552.        {
  1553.        X++;
  1554.        if (X > 10)
  1555.           {
  1556.           ClearWindow("",Menus[3],0,0);
  1557.           X = 0;
  1558.           }
  1559.        WriteWindowLine("",Menus[3],X+1,W_Off,0,0,0,
  1560.                        ReadWindowLine("",Menus[4],X));
  1561.        }
  1562.  
  1563. }while (!S_Esc);
  1564.  
  1565. EraseWindow("",Menus[3]);
  1566. EraseWindow("",Menus[4]);
  1567. EraseWindow("",Menus[5]);
  1568.  
  1569. S_ShowMouse();
  1570. S_SetMouseEvent("01000000");
  1571. PauseWindowUpdates(True);
  1572. S_ResetKeyFlags();
  1573. S_ResetMouseFlags();
  1574. }
  1575.  
  1576.  
  1577.  
  1578.  
  1579.  
  1580.  
  1581.  
  1582.  
  1583.  
  1584.  
  1585.  
  1586.  
  1587.  
  1588.  
  1589.  
  1590.  
  1591.  
  1592.  
  1593.  
  1594. void ShuffleWindows()
  1595. {
  1596. char WorkStr[82], PassStr[81];
  1597. int  FromWindow,
  1598.      ToLevel;
  1599. S_HideMouse();
  1600. S_SetMouseEvent("00000000");
  1601. PauseWindowUpdates(False);
  1602.  
  1603. Z = 1;
  1604. for (X=3;X<9;X++)
  1605.     {
  1606.     itoa(X-2,PassStr,10);
  1607.     strcpy(WorkStr,PassStr);
  1608.     strcat(WorkStr,"╘═══════════╛ Window ");
  1609.     strcat(WorkStr,PassStr);
  1610.     strcat(WorkStr," ╘═══════════╛");
  1611.     strcat(WorkStr,PassStr);
  1612.     strcpy(WindowName,WorkStr);
  1613.     WindowNamePos  = 3;
  1614.     strcpy(WindowFoot,WorkStr);
  1615.     WindowFootPos  = 3;
  1616.     BuildOneWindow(X,Z*2,((Z-1)*6)+1,40,6);
  1617.     itoa(X+1,PassStr,10);
  1618.     WorkStr[0]=0;
  1619.     strcat(WorkStr,"<");
  1620.     strcat(WorkStr,PassStr);
  1621.     strcat(WorkStr,"> --------------Level------------- <");
  1622.     strcat(WorkStr,PassStr);
  1623.     strcat(WorkStr,">");
  1624.     WriteWindowLine("",Menus[X],1,W_Off,0,0,0,WorkStr);
  1625.     WriteWindowLine("",Menus[X],6,W_Off,0,0,0,WorkStr);
  1626.     Z++;
  1627.     OpenWindow("",Menus[X]);
  1628.     }
  1629.  
  1630. WindowName[0]  = 0;
  1631. WindowNamePos  = 0;
  1632. WindowFoot[0]  = 0;
  1633. WindowFootPos  = 0;
  1634.  
  1635. BuildOneWindow(9,21,1,78,2);
  1636.  
  1637. OpenWindow("",Menus[9]);
  1638.  
  1639. PauseWindowUpdates(False);
  1640.  
  1641. X       = 1;
  1642. PassStr[0]=0;
  1643.  
  1644. do{
  1645.    if (PassStr[0] > 0)
  1646.       WriteWindowLine("",Menus[9],2,W_Off,0,RED,YELLOW,PassStr);
  1647.    else
  1648.       WriteWindowLine("",Menus[9],2,W_Off,0,0,0,PassStr);
  1649.  
  1650.  
  1651.    if (X == 1)
  1652.       {
  1653.       PassStr[0]=0;
  1654.       WriteWindowLine("",Menus[9],1,W_Off,0,0,0,
  1655.         "ESC to EXIT or select the WINDOW to be pushed [    ]");
  1656.       ReadWindowField("",Menus[9],1,49,0,2,7,0,PassStr);
  1657.       FromWindow = atoi(PassStr);
  1658.       if  ((FromWindow>0)&&(FromWindow<7))
  1659.           {
  1660.           X=2;
  1661.           FromWindow+=3;
  1662.           PassStr[0]=0;
  1663.           }
  1664.       else
  1665.           strcpy(PassStr,"*** ERROR *** Window number must be in range of 1..6");
  1666.       }
  1667.  
  1668.    if (X == 2)
  1669.       {
  1670.       PassStr[0]=0;
  1671.       WriteWindowLine("",Menus[9],1,W_Off,0,0,0,
  1672.         "Select the stack LEVEL where this window is to be inserted [    ]");
  1673.       ReadWindowField("",Menus[9],1,62,0,2,7,0,PassStr);
  1674.       ToLevel = atoi(PassStr);
  1675.       if  ((ToLevel>3)&&(ToLevel<10))
  1676.           {
  1677.           X=3;
  1678.           PassStr[0]=0;
  1679.           }
  1680.       else
  1681.           strcpy(PassStr,"*** ERROR *** Insert LEVEL must be in range of 4..9");
  1682.       }
  1683.  
  1684.    if (X == 3)
  1685.       {
  1686.       PauseWindowUpdates(True);
  1687.       PushWindow("",FromWindow,ToLevel);
  1688.       for (X=3;X<9;X++)
  1689.           {
  1690.           Y = WTable[X+1];
  1691.           itoa(Y,PassStr,10);
  1692.           WorkStr[0]=0;
  1693.           strcat(WorkStr,"<");
  1694.           strcat(WorkStr,PassStr);
  1695.           strcat(WorkStr,"> --------------Level------------- <");
  1696.           strcat(WorkStr,PassStr);
  1697.           strcat(WorkStr,">");
  1698.           WriteWindowLine("",Menus[X],1,W_Off,0,0,0,WorkStr);
  1699.           WriteWindowLine("",Menus[X],6,W_Off,0,0,0,WorkStr);
  1700.           }
  1701.       PauseWindowUpdates(False);
  1702.       PassStr[0]=0;
  1703.       X = 1;
  1704.       }
  1705.  
  1706. }while (!S_Esc);
  1707.  
  1708.  
  1709. for (X=3;X<10;EraseWindow("",Menus[X++]));
  1710.  
  1711. WindowName[0]  = 0;
  1712. WindowNamePos  = 0;
  1713. WindowFoot[0]  = 0;
  1714. WindowFootPos  = 0;
  1715.  
  1716. S_ShowMouse();
  1717. S_SetMouseEvent("01000000");
  1718. PauseWindowUpdates(True);
  1719. S_ResetKeyFlags();
  1720. S_ResetMouseFlags();
  1721. }
  1722.  
  1723.  
  1724.  
  1725.  
  1726.  
  1727.  
  1728.  
  1729.  
  1730.  
  1731.  
  1732.  
  1733.  
  1734.  
  1735.  
  1736.  
  1737.  
  1738.  
  1739.  
  1740.  
  1741. void PopWindowDemo()
  1742. {
  1743. char PassStr[81];
  1744. int  FromWindow;
  1745.  
  1746. S_HideMouse();
  1747. S_SetMouseEvent("00000000");
  1748. PauseWindowUpdates(False);
  1749.  
  1750. Z = 0;
  1751.  
  1752. for (X=3;X<9;X++)
  1753.     {
  1754.     itoa(X-2,PassStr,10);
  1755.     strcpy(WorkStr,PassStr);
  1756.     strcat(WorkStr,"╘═══════════╛ Window ");
  1757.     strcat(WorkStr,PassStr);
  1758.     strcat(WorkStr," ╘═══════════╛");
  1759.     strcat(WorkStr,PassStr);
  1760.     strcpy(WindowName,WorkStr);
  1761.     WindowNamePos  = 3;
  1762.     strcpy(WindowFoot,WorkStr);
  1763.     WindowFootPos  = 3;
  1764.     BuildOneWindow(X,(Z+1)*2,((Z)*6)+1,40,6);
  1765.     itoa(X+1,PassStr,10);
  1766.     strcpy(WorkStr,"<");
  1767.     strcat(WorkStr,PassStr);
  1768.     strcat(WorkStr,"> --------------Level------------- <");
  1769.     strcat(WorkStr,PassStr);
  1770.     strcat(WorkStr,">");
  1771.     WriteWindowLine("",Menus[X],1,W_Off,0,0,0,WorkStr);
  1772.     WriteWindowLine("",Menus[X],6,W_Off,0,0,0,WorkStr);
  1773.     Z++;
  1774.     OpenWindow("",Menus[X]);
  1775.     }
  1776.  
  1777. WindowName[0]  = 0;
  1778. WindowNamePos  = 0;
  1779. WindowFoot[0]  = 0;
  1780. WindowFootPos  = 0;
  1781.  
  1782. BuildOneWindow(9,21,1,78,2);
  1783.  
  1784. OpenWindow("",Menus[9]);
  1785.  
  1786. PauseWindowUpdates(False);
  1787.  
  1788. X       = 1;
  1789. PassStr[0]=0;
  1790.  
  1791.  
  1792. do{
  1793.  
  1794.    if (PassStr[0] > 0)
  1795.       WriteWindowLine("",Menus[9],2,W_Off,0,RED,YELLOW,PassStr);
  1796.    else
  1797.       WriteWindowLine("",Menus[9],2,W_Off,0,0,0,PassStr);
  1798.  
  1799.    if (X == 1)
  1800.       {
  1801.       PassStr[0]=0;
  1802.       WriteWindowLine("",Menus[9],1,W_Off,0,0,0,
  1803.         "ESC to EXIT or Select the window to be Popped [    ]");
  1804.       ReadWindowField("",Menus[9],1,49,0,2,7,0,PassStr);
  1805.       FromWindow = atoi(PassStr);
  1806.       if  ((FromWindow>0)&&(FromWindow<7))
  1807.           {
  1808.           X=1;
  1809.           FromWindow+=3;
  1810.           PassStr[0]=0;
  1811.           }
  1812.       else
  1813.           strcpy(PassStr,"*** ERROR *** Window number must be in range of 1..6");      };
  1814.  
  1815.    if (X == 1){
  1816.       PauseWindowUpdates(True);
  1817.       PopWindow("",FromWindow);
  1818.       PopWindow("",Menus[9]);
  1819.       for (X=3;X<11;X++)
  1820.           {
  1821.           Y = WTable[X+1];
  1822.           itoa(Y,PassStr,10);
  1823.           strcpy(WorkStr,"<");
  1824.           strcat(WorkStr,PassStr);
  1825.           strcat(WorkStr,"> --------------Level------------- <");
  1826.           strcat(WorkStr,PassStr);
  1827.           strcat(WorkStr,">");
  1828.           WriteWindowLine("",Menus[X],1,W_Off,0,0,0,WorkStr);
  1829.           WriteWindowLine("",Menus[X],6,W_Off,0,0,0,WorkStr);
  1830.           }
  1831.       PauseWindowUpdates(False);
  1832.       PassStr[0]=0;
  1833.       X = 1;}
  1834.  
  1835. }while (!S_Esc);
  1836.  
  1837. for (X=3;X<10;EraseWindow("",Menus[X++]));
  1838.  
  1839. WindowName[0]  = 0;
  1840. WindowNamePos  = 0;
  1841. WindowFoot[0]  = 0;
  1842. WindowFootPos  = 0;
  1843.  
  1844. S_ShowMouse();
  1845. S_SetMouseEvent("01000000");
  1846. PauseWindowUpdates(True);
  1847. S_ResetKeyFlags();
  1848. S_ResetMouseFlags();
  1849. }
  1850.  
  1851.  
  1852.  
  1853.  
  1854.  
  1855.  
  1856.  
  1857.  
  1858.  
  1859.  
  1860.  
  1861.  
  1862.  
  1863.  
  1864.  
  1865.  
  1866.  
  1867.  
  1868.  
  1869. void ChangingWindowBackGrounds()
  1870. {
  1871. char NewScreen[4000];
  1872. static char Texts[6][45] =
  1873.         {"  TURBO ╔══╗ (tm)      ╔══╗    ╥       1.6   ",
  1874.          "        ║              ║       ║   ─╥─       ",
  1875.          "        ╚══╗ ╔══╗ ╔══╗ ╠═   ╔══╣ ╥  ║        ",
  1876.          "           ║ ║    ╠═╦╝ ║    ║  ║ ║  ║        ",
  1877.          "        ╚══╝ ╚══╝ ╨ ╨  ╚══╝ ╚══╝ ╨  ╨        ",
  1878.          " The professional`s screen developement tool "};
  1879.  
  1880. memset((char *)&NewScreen[0],176,4000);
  1881.  
  1882. X = 1;
  1883. do{
  1884.   NewScreen[X] = 2;
  1885. }while ((X+=2) < 4002);
  1886.  
  1887. Y = 15;
  1888. Z = 0;
  1889. for(X=0;X<44;X++)
  1890.    {
  1891.    NewScreen[ (Y*160)    +(X+19)*2]  = Texts[0][X];
  1892.    NewScreen[((Y+1)*160)+((X+19)*2)] = Texts[1][X];
  1893.    NewScreen[((Y+2)*160)+((X+19)*2)] = Texts[2][X];
  1894.    NewScreen[((Y+3)*160)+((X+19)*2)] = Texts[3][X];
  1895.    NewScreen[((Y+4)*160)+((X+19)*2)] = Texts[4][X];
  1896.    NewScreen[((Y+5)*160)+((X+19)*2)] = Texts[5][X];
  1897.    }
  1898.  
  1899. S_HideMouse();
  1900. S_SetMouseEvent("00000000");
  1901.  
  1902. BuildOneWindow(3,22,1,78,2);
  1903.  
  1904. WriteWindowLine("",Menus[3],1,W_Off,0,0,0,
  1905.    " Press ESC to exit or 'S' to swap screen backgrounds..");
  1906. PauseWindowUpdates(False);
  1907. OpenWindow("",Menus[3]);
  1908.  
  1909. X = 1;
  1910. do{
  1911.    S_NextKey();
  1912.    S_Ch = toupper(S_Ch);
  1913.    if  (S_Ch == 'S')
  1914.        if  (X == 1)
  1915.            {
  1916.            X = 2;
  1917.            ChgWindowBackGround(NewScreen,3840);
  1918.            }
  1919.        else
  1920.            {
  1921.            X = 1;
  1922.            ChgWindowBackGround((char *)&HoldScreen,3840);
  1923.            };
  1924. }while(!S_Esc);
  1925.  
  1926. ChgWindowBackGround((char *)&HoldScreen,3840);
  1927. EraseWindow("",Menus[3]);
  1928. S_ShowMouse();
  1929. S_SetMouseEvent("01000000");
  1930. PauseWindowUpdates(True);
  1931. S_ResetKeyFlags();
  1932. S_ResetMouseFlags();
  1933. }
  1934.  
  1935.  
  1936.  
  1937.  
  1938.  
  1939.  
  1940.  
  1941.  
  1942.  
  1943.  
  1944.  
  1945.  
  1946.  
  1947.  
  1948.  
  1949.  
  1950.  
  1951.  
  1952.  
  1953. void StandardIO()
  1954. {
  1955. S_HideMouse();
  1956. S_SetMouseEvent("00000000");
  1957.  
  1958. BuildOneWindow(3,5,10,60,14);
  1959.  
  1960. PauseWindowUpdates(False);
  1961.  
  1962. OpenWindow("",Menus[3]);
  1963.  
  1964. strcpy(S_WorkStr,"***** Standard I/O *****");
  1965. S_SetCursor(S_BOLD);
  1966.  
  1967. do{
  1968.    for (X=0;X<16;X++)
  1969.        {
  1970.        textcolor(X);
  1971.        cprintf("    <%s>",S_WorkStr);
  1972.        }
  1973.  
  1974.    cprintf("\r\n");
  1975.    cprintf("\r\n");
  1976.    cprintf("...........................................................\r\n");
  1977.    cprintf("  Type 'quit' to exit or  type something and Press ENTER.\r\n");
  1978.    cprintf("...........................................................\r\n");
  1979.    S_WorkStr[0]=50;S_WorkStr[1]=0;
  1980.    strcpy(S_WorkStr,cgets(S_WorkStr));
  1981.    strcpy(WorkStr,S_WorkStr);
  1982.    strupr(WorkStr);
  1983.    gotoxy(strlen(S_WorkStr)+1,14);
  1984.    cprintf("\r\n");
  1985.  
  1986. }while(strcmp(WorkStr,"QUIT")!=0);
  1987.  
  1988. S_SetCursor(S_OFF);
  1989.  
  1990. EraseWindow("",Menus[3]);
  1991. S_ShowMouse();
  1992. S_SetMouseEvent("01000000");
  1993. PauseWindowUpdates(True);
  1994. S_ResetKeyFlags();
  1995. S_ResetMouseFlags();
  1996. }
  1997.  
  1998.  
  1999.  
  2000.  
  2001.  
  2002.  
  2003.  
  2004.  
  2005.  
  2006.  
  2007.  
  2008.  
  2009.  
  2010.  
  2011.  
  2012.  
  2013.  
  2014.  
  2015.  
  2016.  
  2017. void FastVideoCheck()
  2018. {
  2019. if  (!S_FastVideo)
  2020.        {
  2021.        WriteWindowLine("",Menus[1],1,W_Off,0,
  2022.                        ConfigRec.PopUpBarBg,
  2023.                        ConfigRec.PopUpBarFg,
  2024.                        " Fast video Mode is now <ON>");
  2025.        S_FastVideo = True;
  2026.        }
  2027.    else
  2028.        {
  2029.        WriteWindowLine("",Menus[1],1,W_Off,0,
  2030.                        ConfigRec.PopUpBarBg,
  2031.                        ConfigRec.PopUpBarFg,
  2032.                        " Fast video mode is now <OFF>");
  2033.        S_FastVideo = False;
  2034.        }
  2035. }
  2036.  
  2037.  
  2038.  
  2039.  
  2040.  
  2041. void main()
  2042. {
  2043. S_Init();
  2044. textcolor(GREEN);
  2045. textbackground(BLACK);
  2046. clrscr();
  2047. gettext(1,1,80,25,HoldScreen);
  2048. randomize();
  2049.  
  2050. S_FastVideo  = False;
  2051. S_Cursor     = S_NORMAL;
  2052. S_Sound      = False;
  2053. S_ShowStatus = False;
  2054.  
  2055. if  (!WindowsInit())
  2056.     {
  2057.     strcpy(S_Msg," Insufficent memeory to use windows.. ");
  2058.     S_NextKey();
  2059.     exit(0);
  2060.     }
  2061.  
  2062. Initialize();
  2063.  
  2064. MainOption      = 0;
  2065. DemoOption      = 1;
  2066. ColorOption     = 1;
  2067.  
  2068. BuildMainMenu();
  2069.  
  2070. S_ActivateMouse();
  2071. S_SetMouseEvent("0100000");
  2072. S_ResetMouseFlags();
  2073. S_ShowMouse();
  2074.  
  2075. DoMouse    = False;
  2076.  
  2077. WindowName [0] = 0;
  2078. WindowNamePos  = 0;
  2079. WindowFoot[0]  = 0;
  2080. WindowFootPos  = 0;
  2081.  
  2082.  
  2083. OpenWindow("",Menus[0]);
  2084.  
  2085. do{
  2086.  
  2087.     if  (MainOption >= MenuBarItems) MainOption = 0;
  2088.     if  (MainOption < 0)            MainOption = MenuBarItems-1;
  2089.  
  2090.     strcpy(WorkStr,MenuBarFields[MainOption]);
  2091.  
  2092.     WriteWindowField("",
  2093.                      Menus[0],
  2094.                      1,
  2095.                      (int)
  2096.                      ((long)strstr(MenuBarStr,WorkStr))-
  2097.                      ((long)&MenuBarStr),
  2098.                      9,
  2099.                      strlen(WorkStr),
  2100.                      ConfigRec.MenuLiteBg,
  2101.                      ConfigRec.MenuLiteFg,
  2102.                      0,
  2103.                      0,
  2104.                      WorkStr);
  2105.  
  2106.     GetNextKey();
  2107.  
  2108.     if  (((S_Enter)||(S_Down))&&(MenuBarLines[MainOption] > 0))
  2109.         WindowActive = True;
  2110.     else
  2111.         WindowActive = False;
  2112.  
  2113.     if  ((S_Enter)&&(MainOption==1))
  2114.         DataEntryDemo();
  2115.  
  2116.     if  (WindowActive == True)
  2117.         {
  2118.  
  2119.         if  (MainOption == 0)
  2120.             {
  2121.             PrevOption = 1;
  2122.             LastLine   = DemoOption;
  2123.             }
  2124.  
  2125.         if  (MainOption == 2)
  2126.             {
  2127.             PrevOption = 2;
  2128.             LastLine   = ColorOption;
  2129.             };
  2130.  
  2131.         OpenWindow("",Menus[PrevOption]);
  2132.  
  2133.         PauseWindowUpdates(True);
  2134.         S_Enter = False;
  2135.  
  2136.         do{
  2137.  
  2138.           WriteWindowLine("",
  2139.                            Menus[PrevOption],
  2140.                            LastLine,
  2141.                            W_Off,
  2142.                            9,
  2143.                            ConfigRec.PopUpBarBg,
  2144.                            ConfigRec.PopUpBarFg,
  2145.                            ReadWindowLine("",Menus[PrevOption],LastLine));
  2146.  
  2147.  
  2148.            if  (MainOption == 0)
  2149.                if  (S_Enter)
  2150.                    switch (LastLine)
  2151.                       {
  2152.                       case 1 : {FastVideoCheck();break;}
  2153.                       case 2 : {OpenAndShutFiftyWindows();break;}
  2154.                       case 3 : {MoveAWindow();break;}
  2155.                       case 4 : {DragAWindow();break;}
  2156.                       case 5 : {MoveSeveralWindows();break;}
  2157.                       case 6 : {WriteToWindowLines();break;}
  2158.                       case 7 : {WritingWithScrolling();break;}
  2159.                       case 8 : {ReadingWindowLines();break;}
  2160.                       case 9 : {ShuffleWindows();break;}
  2161.                       case 10: {PopWindowDemo();break;}
  2162.                       case 11: {ChangingWindowBackGrounds();break;}
  2163.                       case 12: {StandardIO();break;}
  2164.                       }
  2165.  
  2166.            if  (MainOption == 2)
  2167.                if  (S_Enter) ChangeWindowDemo();
  2168.  
  2169.            PauseWindowUpdates(False);
  2170.  
  2171.            NewLine = 0;
  2172.            GetNextKey();
  2173.  
  2174.            PauseWindowUpdates(True);
  2175.            WriteWindowLine("",
  2176.                            Menus[PrevOption],
  2177.                            LastLine,
  2178.                            W_Off,
  2179.                            1,
  2180.                            ConfigRec.PopUpTextBg,
  2181.                            ConfigRec.PopUpTextFg,
  2182.                            ReadWindowLine("",Menus[PrevOption],LastLine));
  2183.  
  2184.            if  (S_Up)   LastLine--;
  2185.            if  (S_Down) LastLine++;
  2186.  
  2187.            if  (LastLine > MenuBarLines[MainOption])
  2188.                LastLine = 1;
  2189.            if  (LastLine < 1)
  2190.                LastLine = MenuBarLines[MainOption];
  2191.  
  2192.            if  (NewLine > 0) LastLine = NewLine;
  2193.  
  2194.         }while(!((DoMouse)||(S_Alt)||(S_Left)||(S_Right)));
  2195.  
  2196.         PauseWindowUpdates(False);
  2197.  
  2198.         if  (PrevOption == 2) DemoOption  = LastLine;
  2199.         if  (PrevOption == 2) ColorOption = LastLine;
  2200.  
  2201.         ShutWindow("",Menus[PrevOption]);
  2202.         };
  2203.  
  2204.     if  (S_Left)             MainOption--;
  2205.     if  ((S_Tab)||(S_Right)) MainOption++;
  2206.  
  2207.     WriteWindowLine("",
  2208.                     Menus[0],
  2209.                     1,
  2210.                     W_Off,
  2211.                     0,
  2212.                     ConfigRec.MenuBarBg,
  2213.                     ConfigRec.MenuBarFg,
  2214.                     MenuBarStr);
  2215.  
  2216. }while(!((S_Enter)&&(MainOption==3)));
  2217.  
  2218. S_DisableMouse();
  2219. EraseWindow("",Menus[0]);
  2220. EraseWindow("",Menus[1]);
  2221.  
  2222. S_SetCursor(S_NORMAL);
  2223. }
  2224.